Amazon DynamoDB একটি অত্যন্ত দ্রুত এবং স্কেলেবল NoSQL ডেটাবেস। এটি বিভিন্ন ধরনের ডেটা অপারেশন এবং কনক্রিট ট্রানজেকশনাল কন্ট্রোল সাপোর্ট করে। Condition Expressions এবং Optimistic Locking দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা ডেটাবেস অপারেশনের সঠিকতা এবং ডেটার কনসিস্টেন্সি নিশ্চিত করতে ব্যবহৃত হয়।
Condition Expressions হল DynamoDB-এর একটি ফিচার যা আপনাকে ডেটাবেস অপারেশনের আগে নির্দিষ্ট শর্ত বা কন্ডিশন যাচাই করতে দেয়। আপনি যখন একটি PutItem, UpdateItem, বা DeleteItem অপারেশন চালান, তখন Condition Expression ব্যবহার করে এটি নির্ধারণ করতে পারবেন যে অপারেশনটি সফল হবে কিনা।
Condition Expression একটি ফিল্ডের মান নির্দিষ্ট শর্ত পূরণ করছে কিনা তা চেক করে এবং কেবলমাত্র সেই শর্ত পূর্ণ হলে অপারেশনটি সম্পন্ন হয়।
উদাহরণস্বরূপ, যদি আপনি একটি UpdateItem অপারেশন চালান এবং চান যে সেটি কেবল তখনই সম্পন্ন হোক যখন একটি নির্দিষ্ট attribute (যেমন "status") একটি নির্দিষ্ট মানে রয়েছে, আপনি Condition Expression ব্যবহার করতে পারেন।
{
"TableName": "Users",
"Key": {
"UserID": {"S": "user123"}
},
"UpdateExpression": "SET #status = :newStatus",
"ConditionExpression": "#status = :expectedStatus",
"ExpressionAttributeNames": {
"#status": "status"
},
"ExpressionAttributeValues": {
":newStatus": {"S": "Active"},
":expectedStatus": {"S": "Pending"}
}
}
এখানে:
Optimistic Locking একটি কৌশল যেখানে ডেটার সংশোধন বা আপডেট করার সময় আমরা আশা করি ডেটাতে কোনো কনফ্লিক্ট হবে না, এবং শুধুমাত্র যখন অন্য কেউ ডেটা পরিবর্তন করে না তখনই আমরা আমাদের পরিবর্তনটি সফলভাবে অ্যাপ্লাই করি।
DynamoDB তে Optimistic Locking এর মাধ্যমে, আপনি Condition Expressions ব্যবহার করে ডেটার versioning নিশ্চিত করতে পারেন। এই পদ্ধতিতে, প্রতিটি Item একটি version (অথবা timestamp) ফিল্ড ধারণ করে। যখন আপনি একটি UpdateItem অপারেশন চালান, আপনি নিশ্চিত করেন যে আপনি যে versionটি চেক করছেন, সেটি কোনো পরিবর্তন ছাড়াই আছে।
ধরা যাক, আপনার একটি "Product" টেবিল রয়েছে, যেখানে প্রতিটি আইটেমের একটি "version" অ্যাট্রিবিউট রয়েছে। যখন আপনি ডেটা আপডেট করতে চান, আপনি নিশ্চিত করতে চান যে অন্য কেউ এই আইটেমটি পরিবর্তন করেনি।
UpdateItem API এর মধ্যে ConditionExpression ব্যবহার করা:
{
"TableName": "Products",
"Key": {
"ProductID": {"S": "prod123"}
},
"UpdateExpression": "SET price = :newPrice, version = version + :increment",
"ConditionExpression": "version = :currentVersion",
"ExpressionAttributeValues": {
":newPrice": {"N": "299.99"},
":currentVersion": {"N": "1"},
":increment": {"N": "1"}
}
}
এখানে:
এই দুটি কৌশলই DynamoDB-তে ডেটা অপারেশনের নিরাপত্তা এবং সঠিকতা বজায় রাখার জন্য অপরিহার্য।
common.read_more